<template>
  <div id="app">
    <h2>---------------App内容：modules----------------</h2>
    <h2>{{$store.state.a.name}}</h2>
    <button @click="updateName">修改名字</button>
    <h2>{{$store.getters.fullName}}</h2>
    <h2>{{$store.getters.fullName2}}</h2>
    <h2>{{$store.getters.fullName3}}</h2>
    <button @click="abcupdateName">异步修改信息</button>


    <h2>--------------App内容----------------</h2>
    <h2>{{$store.state.counter}}</h2>
    <button @click="addition">+</button>
    <button @click="subtraction">-</button>
    <button @click="addCount(5)">+5</button>
    <button @click="addCount(10)">+10</button>
    <button @click="addStudent">添加学生</button>
    
    <h2>--------------App内容：hetters相关信息----------------</h2>
    <h2>{{$store.getters.powerCounter}}</h2>
    <h2>{{$store.getters.more20stu}}</h2>
    <h2>{{$store.getters.moreAgeStu(10)}}</h2>
    <h2>一共是：{{$store.getters.more20stuLength}}</h2>

    <h2>-------------App内容:actions-------------</h2>
    <h2>{{$store.state.info}}</h2>
    <button @click="UpdateInfo">修改信息</button>

    <HelloWorld/>
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld'

export default {
  name: 'App',
  components: {
    HelloWorld
  },
  // computed: {
  //   more20stu(){
  //     // filter 高阶函数 遍历数组 s 是每个月对象
  //     return this.$store.state.students.filter(s => {
  //       // 返回 >= 20 的数据
  //       return s.age >= 20
  //     })
  //   }
  // },
  methods: {
    addition(){
      // 通过this.$store拿到我们vuex 
      // commit 提交的意思 
      // this.$store.commit('方法名')
      this.$store.commit('increment')
    },
    subtraction(){
      this.$store.commit('decrement')
    },
    addCount(count){
      // 如果要使用vuex里面的mutations 方法属性 需要使用 commit
      // this.$store.commit('vuex里面的方法名', 传递给vuex的值)
      // payload：负载
      // 1.普通的提交封装 
      this.$store.commit('incrementCount', count)

      // 2.特殊的提交封装 括号里面跟对象
      this.$store.commit({
        // type 方法名
        type:'incrementCount',
        // 传递过去的参数 mutations 那边接收的是一个对象
        count
      })
    },
    addStudent(){
      const stu = {id:7,name:'kebi',age:20}
      this.$store.commit('addStudent',stu)
    },
    UpdateInfo(){
      // 通过 dispatch 获取vuex里面的actions 异步请求方法属性
      this.$store.dispatch('aUpdateInfo',{
        payload:'我是携带的信息',
        success:() => {
          console.log('您已经完成了修改');
        }
      })
    },
    updateName(){
      this.$store.commit('updateName','lisi')
    },
    abcupdateName(){
      this.$store.dispatch('AUpdateName')
    }
  }
}
</script>

<style>
</style>
